Natural language processing can be a difficult computational task. For example, the goal of building a machine that is generally capable of a meaningful discussion with a human user continues to elude researchers. While some natural language processing applications have met with success, these applications generally have certain drawbacks.
For example, some natural language processing applications are relatively successful, but they are constrained to a relatively narrow goal. As but one example, existing machine learning techniques can compile lists of known “facts” taken from natural language texts. However, these techniques have little applicability outside of the specific context of fact-gathering. Even applications that have broader applicability may require relatively intensive user supervision to achieve satisfactory results. For example, while voice recognition software works relatively well for many users, this often requires a user to invest time to train the software using his or her voice by correcting errors made by the software.